#pragma once
#include <sstream>

#include <string>
#include "SQLLiteralExpr.h"
#include "SQLTextLiteralExpr.h"
#include "../../../utils/common_ptr.h"

class SQLASTVisitor;

class SQLCharExpr : virtual public SQLTextLiteralExpr
{
  typedef SQLTextLiteralExpr super;

public:
  static string_ptr class_;
  static SQLDataType_ptr DATA_TYPE;
  SQLCharExpr();
  virtual ~SQLCharExpr();

  SQLCharExpr(string_ptr text);
  SQLCharExpr(string_ptr text, SQLObject_ptr parent);
  SHAREDOBJECT(SQLCharExpr);

  void output(std::stringstream * buf);
  // SQLCharExpr *clone();
  virtual SQLObject_ptr clone();

protected:
  void accept0(SQLASTVisitor_ptr visitor);
};

